package GestorClinico;

/**
 * @file Direccion.java
 * @brief Implementa la clase Direccion
 * 
 * Implementa la clase Direccion usada para manejar la información de
 * las direcciones del sistema.
 * 
 * @author Víctor Martínez Gómez
 * @version 01.03
 * 
 */

import java.io.IOException;
import java.sql.SQLException;

import GestorUsuarios.IDException;


/**
 * @class Direccion
 * 
 * @brief Se encarga de realizar las operaciones para manejar la información de
 * 		  las direcciones del sistema.
 * 
 *        Se encarga de realizar las operaciones para manejar la información de
 *		  las direcciones del sistema. Permite crearlas y obtener sus
 *		  datos.
 * 
 */

public class Direccion {
	/**
	 * @brief Id de la direccion
	 */
	private int _idDireccion;
	/**
	 * @brief La propia direccion
	 */
	private String _direccion;
	/**
	 * @brief La localidad de la direccion
	 */
	private String _localidad;
	/**
	 * @brief Codigo postal de la direccion
	 */
	private int _CP;
	/**
	 * @brief Pais de la direccion
	 */
	private String _pais;
	/**
	 * @brief Telefono asociado a la direccion
	 */
	private int _telefono;
	
	/**
	 * @brief Añade la dirección a la base de datos y le asigna el nuevo id
	 * @param direccion La direccion a añadir
	 * @return True si se añadio correctamente
	 * @throws ClassNotFoundException, IOException, SQLException, IDException
	 */
	public static boolean add(Direccion direccion) throws SQLException, IOException, ClassNotFoundException, IDException {
		DireccionDAO.add(direccion);
		return true;
	}
	
	/**
	 * @brief Obtiene una direccion por su id por la del usuario
	 * @param idUsuario ID del usuario
	 * @param idDireccion Id de la direccion
	 * @throws ClassNotFoundException, IOException, SQLException, ClassNotFoundException
	 */
	public static Direccion [] get(Integer idUsuario, Integer idDireccion) throws SQLException, IOException, ClassNotFoundException{
		return DireccionDAO.get(idUsuario,idDireccion);
	}
	
	
	/**
	 * @throws ClassNotFoundException, IOException, SQLException 
	 * @brief Actualiza una direccion en la base de datos
	 * @return True si se actualizo correctamente
	 * @param usuario La direccion a actualizar
	 */
	public static boolean update(Direccion direccion) throws SQLException, IOException, ClassNotFoundException {
		DireccionDAO.update(direccion);
		return true;
	}
	
	/**
	 * @brief Constructor de Direccion
	 */
	public Direccion(int idDireccion, String direccion, String localidad, int CP, String pais, int telefono) {
		_idDireccion = idDireccion;
		_direccion = direccion;
		_localidad = localidad;
		_CP = CP;
		_pais = pais;
		_telefono = telefono;
	}
	
	/**
	 * @brief Constructor de Direccion
	 */
	public Direccion( String direccion, String localidad, int CP, String pais, int telefono) {
		_idDireccion = -1;
		_direccion = direccion;
		_localidad = localidad;
		_CP = CP;
		_pais = pais;
		_telefono = telefono;
	}
	
	/**
	 * @brief Constructor de Direccion
	 */
	public Direccion() {
		_idDireccion = -1;
	}

	/**
	 * @brief Obtiene el id de la dirección
	 */
	public int getIdDireccion() {
		return _idDireccion;
	}
	
	/**
	 * @brief Establece el id de la dirección
	 * @param id Nuevo id de la dirección
	 */
	public void setIdDireccion(int id) {
		_idDireccion = id;
	}
	
	/**
	 * @brief Obtiene la direccion asociada
	 */
	public String getDireccion() {
		return _direccion;
	}
	
	/**
	 * @brief Establece la nueva direccion
	 * @param direccion Nueva direccion
	 */
	public void setDireccion(String direccion) {
		_direccion = direccion;
	}
	
	/**
	 * @brief Obtiene la localidad asociada
	 */
	public String getLocalidad() {
		return _localidad;
	}
	
	/**
	 * @brief Establece la nueva localidad
	 * @param localidad Nueva localidad
	 */
	public void setLocalidad(String localidad) {
		_localidad = localidad;
	}
	
	/**
	 * @brief Obtiene el CP asociado
	 */
	public int getCP() {
		return _CP;
	}
	
	/**
	 * @brief Establece el nuevo código postal
	 * @param CP Nuevo código postal
	 */
	public void setCP(int CP) {
		_CP = CP;
	}
	
	/**
	 * @brief Obtiene el pais asociado
	 */
	public String getPais() {
		return _pais;
	}
	
	/**
	 * @brief Establece el nuevo pais
	 * @param pais Nuevo pais
	 */
	public void setPais(String pais) {
		_pais = pais;
	}
	
	/**
	 * @brief Obtiene el teléfono asociado
	 */
	public int getTelefono() {
		return _telefono;
	}
	
	/**
	 * @brief Establece el nuevo teléfono
	 * @param telefono Nuevo teléfono
	 */
	public void setTelefono(int telefono) {
		_telefono = telefono;
	}
	
}